package com.bjpowernode.crm.web.listener;

import com.bjpowernode.crm.settings.domain.DicValue;
import com.bjpowernode.crm.settings.service.DicService;
import com.bjpowernode.crm.settings.service.impl.DicServiceImpl;
import com.bjpowernode.crm.utils.ServiceFactory;
import com.bjpowernode.crm.utils.SqlSessionUtil;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import java.util.*;

/**
 * @program: crm
 * @description:
 * @author: 玉树临风的寒
 * @create: 2020-12-22 21:18:54
 **/
public class SysInitListener implements ServletContextListener {

    //用来监听全局作用域对象的产生，也就是当服务器启动时运行该方法
    //sce可以取得监听的对象 监听的是什么对象 就可以通过该参数取得什么对象
    //现在监听的是全局作用域对象 sce就可以 取得 全局作用域对象
    public void contextInitialized(ServletContextEvent sce) {
        //System.out.println("上下文域对象创建啊了");
        System.out.println("服务器缓存处理数据字典开始");
        ServletContext application = sce.getServletContext();

        //取数据字典
        DicService ds = (DicService) ServiceFactory.getService(new DicServiceImpl());

        /*
            应该向业务层索要
            7个list

            可以打包成为map
            应该这样返回数据
            map.put("appellationList",divList1);
            map.put("clueStateList",divList2);
            .....
         */
       Map<String, List<DicValue>> map =ds.getAll();

       //将map解析为上下文域对象中保存的键值对
        Set<String> set = map.keySet();
        for (String key :set){
            application.setAttribute(key,map.get(key));
        }

        System.out.println("服务器缓存处理数据字典结束");

        //=====================
        //数据字典处理完毕后，需要将properties文件加载
        /*
           解析该文件，将该属性文件中的键值对处理成java中的键值对（map）
           map<String(阶段stage),String(可能性possibility)> pMap=..
           pMap.put("01资质审查",10)
           pMap.put("02需求分析",25)
           ....

           pMap保存值之后，防在服务器缓存中
           application.setAttribute("pMap",pMap)
         */

        //解析properties文件
        Map<String,String> pMap = new HashMap<String, String>();
        ResourceBundle rb = ResourceBundle.getBundle("Stage2Possibility");

        Enumeration<String> e = rb.getKeys();
        while (e.hasMoreElements()){
            //阶段
            String key=e.nextElement();
            //可能性
            String value = rb.getString(key);
            pMap.put(key,value);
        }
        //将pmap保存到服务器缓存中
        application.setAttribute("pMap",pMap);


    }

    public void contextDestroyed(ServletContextEvent sce) {
        System.out.println("上下文域对象销毁了");
    }
}
